package com.proyecto.core.vista.echo.componentes;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.ResourceBundle;

import javax.imageio.ImageIO;
import javax.swing.JLabel;

import org.jposition.CharacterInvalidException;
import org.jposition.Colors;
import org.jposition.Coordinate;
import org.jposition.CoordinateRangeException;
import org.jposition.Dimension;
import org.jposition.DimensionRangeException;
import org.jposition.MapTypeException;
import org.jposition.Marker;
import org.jposition.MarkersMap;
import org.jposition.NoExistColorException;
import org.jposition.SizeRangeException;
import org.jposition.ZoomRangeException;

import com.proyecto.core.Utilidades.FileWrapper;
import com.proyecto.core.Utilidades.bajarImagenUrl;
import com.proyecto.core.Utilidades.openURL;
import com.proyecto.core.modelo.echo.constantes.ParametrosIniciales;

import common.Logger;

import nextapp.echo2.app.ResourceImageReference;
import nextapp.echo2.app.WindowPane;
import nextapp.echo2.app.ContentPane;
import nextapp.echo2.app.Column;
import nextapp.echo2.app.Row;
import nextapp.echo2.app.Button;
import nextapp.echo2.app.Extent;
import nextapp.echo2.app.event.ActionEvent;
import nextapp.echo2.app.event.ActionListener;
import nextapp.echo2.app.Label;
import nextapp.echo2.app.ApplicationInstance;

public class WpMap extends WindowPane {
	
	private Double xLalitude = 0d;
	private Double xLonguitude = 0d;
	private Integer xZoom;
	
	private ResourceBundle resourceBundle;
	private Label lblMap;
	private JLabel lblImagenMapa;
	private Button btnVer;
	/**
	 * Creates a new <code>WpMap</code>.
	 */
	public WpMap() {
		super();

		// Add design-time configured components.
		initComponents();
		inicializar();
		this.setModal(true);
		this.setResizable(false);
		this.setTitle("Google Map");
	}
	
	public WpMap(Double sLalitude,Double sLonguitude) {
		super();
		initComponents();
		inicializar();
		this.xLalitude = sLalitude;
		this.xLonguitude = sLonguitude;

	}
	
	public WpMap(Double sLalitude, Double sLonguitude,Integer sZoom){
		super();
		initComponents();
		inicializar();
		this.xLalitude = sLalitude;
		this.xLonguitude = sLonguitude;
		this.xZoom = sZoom;
	}
	
	private void actionVer(ActionEvent e) {
		//TODO Implement.
		xLalitude = 7.919593;
		xLonguitude = -72.522397;
		ejecutarBusqueda();
	}
	
	public void inicializar(){
		this.setModal(true);
		this.setResizable(false);
		this.setTitle("Google Map");
	}
	
	public void asignarStyle(){
		setStyleName("OpenLabs.WindowPaneDialogoMensajes");
		setModal(true);
		btnVer.setStyleName("OpenLabs.Button.Todos.Default");
	}
	
	public void ejecutarBusqueda(){
		BufferedImage imagen;
		try {
			Coordinate coordenada = new Coordinate( xLalitude,xLonguitude);
			Marker punto = new Marker(Colors.ColorRed, coordenada, Colors.SizeMid, 'p');
			ArrayList<Marker> listaPuntos = new ArrayList<Marker>();
			listaPuntos.add(punto);
			MarkersMap mapa = new MarkersMap("",coordenada,this.xZoom,listaPuntos);
			mapa.setDimmension(new Dimension(400, 400));
			mapa.setMapType(MarkersMap.RoadMap);
			//ImageIcon ii = mapa.getMapImage();

			String nombreArchivo = "img" + "@" + xLalitude.toString() + "@" +xLonguitude.toString() + ".png";
			
			bajarImagenUrl.getImageFromUrl(mapa.getMapURL(),xLalitude.toString(),xLonguitude.toString(), nombreArchivo);
			
			//ResourceImageReference imageReference1 = new ResourceImageReference("c:/img@" + xLalitude + "@" +xLonguitude + ".png"); 
			
			String rutaArchivo2 = ParametrosIniciales.RUTAMAP;
			String rutaArchivoSrcWin = ParametrosIniciales.RUTAMAPSRCWIN;
			String rutaArchivoOutWin = ParametrosIniciales.RUTAMAPOUTWIN;
			String rutaArchivolinux = ParametrosIniciales.RUTAMAPLINUX;
			String rutaArchivoDesarrollo = ParametrosIniciales.RUTAMAPDESARROLLO;
			String rutaArchivoEchoWin = ParametrosIniciales.RUTAMAPECHOWIN;
			
			String rutaArchivo = "/com/proyecto/vista/resource/imagenes/general/";
			File tmpFile = new File(rutaArchivo2+nombreArchivo);
						ResourceImageReference imageReference1 = new ResourceImageReference("/com/proyecto/core/vista/echo/resource/image/icon/general/Icon24Yes.gif");
			System.out.println("imageReference1::: " + imageReference1);
			lblMap.setIcon(imageReference1);
			String url = mapa.getMapURL();
        	//openURL(url);

            Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
			//lblImagenMapa.setSize(500, 500);
			
			//lblImagenMapa.setIcon(mapa.getMapImage());
			
		} catch (IOException ioe) {
			// TODO: handle exception
			Logger.getLogger(this.getClass());
			System.out.println(ioe.toString());
			
		} catch (CharacterInvalidException cie) {
			// TODO: handle exception
			Logger.getLogger(this.getClass());
			System.out.println(cie.toString());
			
		}catch (ZoomRangeException zre) {
			// TODO: handle exception
			Logger.getLogger(this.getClass());
			System.out.println(zre.toString());
			
		}catch (DimensionRangeException dre) {
			// TODO: handle exception
			Logger.getLogger(this.getClass());
			System.out.println(dre.toString());
			
		}catch (MapTypeException mte) {
			// TODO: handle exception
			Logger.getLogger(this.getClass());
			System.out.println(mte.toString());
			
		}catch (NoExistColorException mte) {
			// TODO: handle exception
			Logger.getLogger(this.getClass());
			System.out.println(mte.toString());
			
		}catch (SizeRangeException mte) {
			// TODO: handle exception
			Logger.getLogger(this.getClass());
			System.out.println(mte.toString());
			
		}catch (CoordinateRangeException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
			System.out.println(e1.toString());
		}			
	}

	/**
	 * Configures initial state of component.
	 * WARNING: AUTO-GENERATED METHOD.
	 * Contents will be overwritten.
	 */
	private void initComponents() {
		resourceBundle = ResourceBundle.getBundle(
				"com.proyecto.core.vista.echo.resource.localization.etiquetas",
				ApplicationInstance.getActive().getLocale());
		this.setWidth(new Extent(600, Extent.PX));
		this.setHeight(new Extent(450, Extent.PX));
		this.setStyleName("DefaultWPFechaCalendario");
		ContentPane contentPane1 = new ContentPane();
		add(contentPane1);
		Column column1 = new Column();
		contentPane1.add(column1);
		Row row1 = new Row();
		row1.setVisible(false);
		column1.add(row1);
		btnVer = new Button();
		btnVer.setText("ver");
		btnVer.setStyleName("2OpenLabs.Button.Transaccion");
		btnVer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				actionVer(e);
			}
		});
		row1.add(btnVer);
		Row row2 = new Row();
		row2.setStyleName("2OpenLabs.Row.Datos");
		column1.add(row2);
		lblMap = new Label();
		ResourceImageReference imageReference1 = new ResourceImageReference(
				"/com/proyecto/core/vista/echo/resource/image/icon/general/Icon24X.gif");
		lblMap.setIcon(imageReference1);
		row2.add(lblMap);
	}
}
